#include "ThreadPool.hpp"
#include "Task.hpp"
#include <iostream>
#include <memory>
#include <ctime>



using namespace std;

int main()
{
    // unique_ptr < ThreadPool<Task> tp(new ThreadPool<Task>());
    ThreadPool<Task>* tp = new ThreadPool<Task>();
    tp->Start();
    srand((uint64_t)time(nullptr)^getpid());
    
    //以后这里可以插入网络的一些任务
    while (true)
    {
        int x = rand() % 100 + 1;
        usleep(1000);
        int y = rand() % 200 + 1;
        usleep(1000);

        char oper = opers[rand() % opers.size()];

        Task t(x, y, oper);
        t.Printtask();//把任务打印出来
        tp->Push(t);

        sleep(1);
    }

    tp->Wait();
    return 0;
}
//扩展1
// int _thread_num_low_water;  // 3
    // int _thread_num_high_water; // 10
    // int _task_num_low_water;    // 0
    // int _task_num_high_water;   // 30

//扩展2
//实现通过多进程里面包含多线程（进程通过管道通信中）